#pragma once

#include "CNoParentShareableDependencyObject.h"
#include "XamlTypeToken.h"
class CType :
	public CNoParentShareableDependencyObject
{

public: 
	CType(CCoreServices * pCore);
protected: 
	CType();
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
public: 
	HRESULT FromString(CREATEPARAMETERS * pCreate);
protected: 
	virtual ~CType();
private: 
	void Initialize(CCoreServices * pCore);
public: 
	XBOOL m_bIsCore;
	XUINT32 m_nManagedTypeIndex;
	XUINT32 m_nCoreTypeIndex;
	CXString * m_pstrFullName;
	struct XamlTypeToken m_xamlTypeToken;
	virtual XUINT32 GetTypeIndex() const;
	XBOOL IsCoreType();
	XUINT32 GetManagedTypeIndex();
	XUINT32 GetCoreTypeIndex();
	HRESULT GetClassNameW(CXString * * ppstrFullName);
	virtual HRESULT SetValue(CDependencyProperty * pdp, CValue * pValue);
	virtual XBOOL ControlsManagedPeerLifetime();


};